Міністерство освіти і науки, молоді та спорту України
Національний університет „Львівська Політехніка”
Кафедра БІТ
Розрахункова робота №2
З курсу:
“Комп’ютерна графіка”
Львів 2012
Мета роботи : Набути практичних навиків в складанні програм для побудови зображень на екрані комп’ютера.
Завдання:
Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення. Вікно розмістити в верхньому правому куті екрану. Навести межі вікна. Параметри рухомого зображення визначені в таблиці 3. Параметри зображення задані в пікселах. Варіант завдання визначає викладач.
Графік і вікно з рухомим зображенням повинні бути присутні на екрані одночасно, причому вікно не має перекривати графік (рис.1).
Рис.1. Розташування графіка і рухомого зображення на екрані комп’ютера
№ варіанту
Структура зображення
Пояснення
2
Кулька радіусу r зі спицями котиться по видимому круговому контуру радіусу R за годинниковою стрілкою. Кольори кульки і контуру різні.
Параметри : r=20, R=100
Короткі теоретичні відомості.
В основі побудови зображень на екрані комп'ютера лежать операції переносу, масштабування (гомотетії) і повороту, а також їх композиції.
Точку на ху-площині можна перенести в нове положення шляхом додавання до її координат констант переносу:
, .
Для векторної форми
, ,
;
,
P’=P+T.
Перенесення складного об'єкту виконується шляхом перенесення всіх його точок, – реперних точок: .
Масштабування точки передбачає домноження її координат на коефіцієнти масштабування:
, .
При переході до векторної форми, де
,
можна записати
,
P’=P(S
При повороті точки на кут відносно початку координат нові координати визначаються так (проти годинникової стрілки, додатний поворот):
,
.
В векторній формі, де ,
,
P’=P(R
При від'ємному повороті (за годинниковою стрілкою)
Розрахунок повороту в полярних координатах можна виразити так:
;
,
.
На практиці наведені елементарні перетворення при побудові зображень на екрані поєднують. Для цього координати точки приводяться до однорідних координат. При цьому з’являється можливість всі перетворення реалізувати з допомогою множення матриць.
Даний метод полягає в тому, що кожна точка в -мірному просторі є проекцією точки з -мірного простору. Так точка на площині може бути проекцією точки з простору , де може набувати будь-яких значень, крім .
Для координати є нормалізованими.
Декартові координати точки на площині враховуються як:
.
Надалі двомірні перетворення в площині екрану будемо розглядати як перетворення в однорідних нормалізованих координатах .
Для перетворень в нормалізованих однорідних координатах розмірність матриць і векторів перетворень збільшується на 1.
Перенесення.
, ,
P’=P(T(Dx,Dy)
Масштабування.
P’=P(S(Sx,Sy)
.
Поворот.
P’=P(R(()
Код програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
// для работи з бібліотекою OpenGL
using Tao.OpenGl;
// для работи з бібліотекою FreeGLUT
using Tao.FreeGlut;
// для работи з елементом управління SimpleOpenGLControl
using Tao.Platform.Windows;
namespace rozrah1
{
public partial class Form1 : Form
{
float Angle;
float PI = (float)Math.PI;
// разміри вікна
double ScreenW, ScreenH, Screen;
// відношення сторін вікна візуалізації
private float devX;
private float devY;
// масив, котрий буде зберігати значення x,y точок графіка
private float[,] GrapValuesArray;
// кількість елементів в масиві
private int elements_count = 0;
// прапорець, що означає, що масив із значеннями координат графіка поки що не заповнений
private bool not_calculate = true;
// допоміжні змінні для побудови ліній від курсора миші до координатних осей
float lineX, lineY;
// поточні координати...